<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>基础概要</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="language.errors.html">« 错误</a></li>
      <li style="float: right;"><a href="language.errors.php7.html">PHP 7 错误处理 »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="language.errors.html">错误</a></li>
    <li>基础概要</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="language.errors.basics" class="sect1">
 <h2 class="title">基础概要</h2>

 <p class="para">
  PHP 对一些内部的错误情况进行报错。
  这些错误可以用来表示不同的情况，可以根据需要将错误显示出来或记录到日志中。
 </p>

 <p class="para">
    每个 PHP 产生的错误都包含了类型。可查看
  <a href="errorfunc.constants.html" class="link">错误类型清单</a>，它附带了不同类型行为的简短描述和
  产生的原因。
 </p>

 <div class="sect2" id="language.errors.basics.handling">
  <h3 class="title">PHP 错误处理</h3>

  <p class="para">
   当未设置错误处理函数时，PHP 会根据配置处理出现的错误。
   php.ini 中 
   <a href="errorfunc.configuration.html#ini.error-reporting" class="link"><code class="parameter">error_reporting</code></a> 的配置或者是运行时调用
   <span class="function"><a href="function.error-reporting.html" class="function">error_reporting()</a></span> 控制了哪些错误需要报告，哪些错误需要自动忽略。
   由于有些错误会在运行用户脚本前就可能出现，所以强烈推荐用配置指令来设置。
  </p>

  <p class="para">
   在开发环境里为了发现并修复 PHP 产生的问题，
   应该总是把 <a href="errorfunc.configuration.html#ini.error-reporting" class="link"><code class="parameter">error_reporting</code></a>
   设置为 <strong><code>E_ALL</code></strong>。
   
   在生产环境里，用户可能为了降低信息的详细程度，
   想要将它设置为类似 <code class="code">E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED</code>，
   但很多情况下 <strong><code>E_ALL</code></strong> 也同样适用，这样可以更早地警告潜在问题。
  </p>

  <p class="para">
    PHP 对这些错误的处理方式，取决于两个更深的 php.ini 指令。

   <a href="errorfunc.configuration.html#ini.display-errors" class="link"><code class="parameter">display_errors</code></a> 
   控制了是否要将错误作为脚本输出的一部分显示。
   在生产环境里应该禁用，因为可能包含类似数据库密码这样的敏感信息，
   而在开发环境中应该启用，能确保立即报告问题。
  </p>

  <p class="para">
    PHP 不仅能显示错误，还可以开启 <a href="errorfunc.configuration.html#ini.log-errors" class="link"><code class="parameter">log_errors</code></a>
    指令来记录错误日志。它能根据 <a href="errorfunc.configuration.html#ini.error-log" class="link"><code class="parameter">error_log</code></a> 的设置，记录任意错误到文件或者 syslog。
   特别适用于生产环境，用户可以记录发生的错误，并根据这些错误生成报告。
  </p>
 </div>

 <div class="sect2" id="language.errors.basics.user">
  <h3 class="title">用户的错误处理器</h3>

  <p class="para">
    如果 PHP 默认错误处理器还不能满足要求，用户可以通过 <span class="function"><a href="function.set-error-handler.html" class="function">set_error_handler()</a></span> 
    设置自定义错误处理器，可处理很多类型的错误。
   虽然有些类型的错误不能通过这种方式处理，但能处理的类型可以用脚本合适的方式处理：
   例如为用户显示自定义错误页面，同时以一种比日志更直接的方式上报错误，例如发送邮件。
  </p>
 </div>
</div></div></div></body></html>